<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
     const p1 =  new Promise((resolve,reject)=>{
            try{
                throw new Error('cuole')
                console.log('开始获取a数据');
               
                setTimeout(()=>{
                    console.log('获取A数据成功');
                    resolve('c')
                },2000)
            }catch(e){
                reject(e.message)
            }
        })
        // 当 then和catch中没有处理成功或失败状态的函数时
        // 值直接穿透
        .then(value =>{
            return 1
        })
        .catch(reason =>{ //成功 上面的then就处理，失败就直接穿透到catch上处理
            return 2
        })
        .then(value =>{
            return 3
        })
        .catch(reason=>{
            return 4
        })

       console.log('p1',p1); 
    //    这里 p1   返回的是一个成功状态promise，值是3

    //    如果失败，则优先进到catch2 .然后返回一个成功的promise，值是2. 
    //    然后会再进到then 3   ，拿到一个成功promise 值 3往下穿透
    </script>
</body>
</html>